package com.rain.example.verifyPermissions.utils;

import com.rain.example.verifyPermissions.config.JWTConfig;
import com.rain.example.verifyPermissions.models.user.User;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;

import java.util.Date;
import java.util.HashMap;

public class JWTTokenUtil {

    /**
     * 生成Token
     *
     * @param user 用户安全实体
     * @return Token
     */
    public static String createAccessToken(User user) {
        // 登陆成功生成JWT
        return Jwts.builder()
                // 放入用户名和用户ID
                .setClaims(new HashMap<String, Object>() {{
                    put("password", user.getPassword());
                    put("id", user.getUserId());
                }})
                // 主题
                .setSubject(user.getLoginName())
                // 签发时间
                .setIssuedAt(new Date())
                // 签发者
                .setIssuer("rain")
                // 失效时间
                .setExpiration(new Date(System.currentTimeMillis() + JWTConfig.expiration))
                // 签名算法和密钥
                .signWith(SignatureAlgorithm.HS512, JWTConfig.secret).compact();
    }
}